package offer.day14;

import offer.day15.ListNode;

import java.util.Arrays;

public class No21adjustOddEvent {
    /*
     * 面试题21：调整数组顺序使奇数位于偶数前面
     * 题目：输入一个整数数组，实现一个函数来调整该数组中数字的顺序，
     * 使得所有奇数位于数组的前半部分，所有偶数位于数组的后半部分
     *
     * 思路：
     * 方法一：设置两个指针  一个指向第一个元素，一饿指向最后一个元素
     * 第一个元素找偶数，第二个元素找奇数，然后二者进行交换即可。不能保证奇数之间的相对位置+偶数之间的相对位置
     *
     * 方法二：设置一个LinkedList集合，将偶数存入其中，遍历完整个数组之后再将集合中的数据存入数组即可。
     *
     *
     * */

    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4};
        adjustOddEvent(nums);
        System.out.println(Arrays.toString(nums));

    }

    public static void adjustOddEvent(int[] arr) {
        if (arr == null || arr.length == 0) return;
        int left = 0;
        int right = arr.length - 1;
        while (left < right) {
            while (left < right && arr[left] % 2 != 0) {
                left++;
            }
            while (left < right && arr[right] % 2 != 1) {
                right--;
            }
            if (left < right){
                int temp=arr[left];
                arr[left]=arr[right];
                arr[right]=temp;
            }
        }
    }


}
